package schema

import (
	"time"

	"lianzi_gos/pkg/util"
)

// 平台企业配置表
type Syscfg struct {
	ID           string    `json:"id" gorm:"size:20;primarykey;"`                                   // Unique ID
	Name         string    `json:"name" gorm:"size:32;index;comment:'公司名称';default:'';"`            // 公司名称
	Phone        string    `json:"phone" gorm:"size:32;index;comment:'公司电话';default:''"`            // 公司电话
	Logo         string    `json:"logo" gorm:"size:255;index;comment:'logo';default:''"`            // logo
	Address      string    `json:"address" gorm:"size:255;index;comment:'公司地址';default:'';"`        // 公司地址
	TengxunKey   string    `json:"tengxun_key" gorm:"size:255;index;comment:'腾讯地图key';default:'';"` // 腾讯地图key
	Description  string    `json:"description" gorm:"size:1024;comment:'介绍';default:'';"`           // 介绍
	Content      string    `json:"content" gorm:"type:text;comment:'公司介绍';"`                        // 富文本
	Protocol     string    `json:"protocol" gorm:"type:text;comment:'注册协议'"`                        // 注册协议
	UserProtocol string    `json:"user_protocol" gorm:"type:text;comment:'用户隐私协议'"`                 // 注册协议
	PProtocol    string    `json:"p_protocol" gorm:"type:text;comment:'平台协议'"`                      // 注册协议
	Beian        string    `json:"beian" gorm:"size:200;comment:'备案信息'"`                            // 注册协议
	CreatedAt    time.Time `json:"created_at" gorm:"index;"`                                        // Create time
	UpdatedAt    time.Time `json:"updated_at" gorm:"index;"`                                        // Update time
}

// Defining the query parameters for the `Syscfg` struct.
type SyscfgQueryParam struct {
	util.PaginationParam
}

// Defining the query options for the `Syscfg` struct.
type SyscfgQueryOptions struct {
	util.QueryOptions
}

// Defining the query result for the `Syscfg` struct.
type SyscfgQueryResult struct {
	Data       Syscfgs
	PageResult *util.PaginationResult
}

// Defining the slice of `Syscfg` struct.
type Syscfgs []*Syscfg

// Defining the data structure for creating a `Syscfg` struct.
type SyscfgForm struct {
	Name         string `json:"name" binding:"required,max=32"`  // 公司名称
	Phone        string `json:"phone" binding:"required,max=32"` // 公司电话
	Logo         string `json:"logo"`                            // logo
	Address      string `json:"address"`                         // logo
	Description  string `json:"description"`                     // 介绍
	Content      string `json:"content"`                         // 关于公司
	Protocol     string `json:"protocol"`                        // 注册协议
	Beian        string `json:"beian"`                           // 备案
	UserProtocol string `json:"user_protocol"`                   // 用户协议
	PProtocol    string `json:"p_protocol"`                      // 平台协议
}

// A validation function for the `SyscfgForm` struct.
func (a *SyscfgForm) Validate() error {
	return nil
}

// Convert `SyscfgForm` to `Syscfg` object.
func (a *SyscfgForm) FillTo(syscfg *Syscfg) error {
	syscfg.Name = a.Name
	syscfg.Phone = a.Phone
	syscfg.Address = a.Address
	syscfg.Description = a.Description
	syscfg.Content = a.Content
	syscfg.PProtocol = a.PProtocol
	syscfg.UserProtocol = a.UserProtocol
	syscfg.Beian = a.Beian
	syscfg.Protocol = a.Protocol
	syscfg.Logo = a.Logo
	return nil
}
